﻿/***********************************************************************
 * <copyright file="EntityDoaFactory.cs" company="BUCA JSC">
 * -->    Copyright (C) statement. All right reserved
 * </copyright>
 * 
 * Created:   Tuanhm
 * Email:    Tuanhm@humg@gmail.com
 * Website:
 * Create Date: Thursday, March 27, 2014
 * Usage: 
 * 
 * RevisionHistory: 
 * Date         Author               Description 
 * 
 * ************************************************************************/

using DataObjects.EntityFramework.Implementation.Dictionary;
using DataObjects.EntityFramework.Implementation.Report;
using DataObjects.EntityFramework.Implementation.Voucher;
using DataObjects.StandartInterfaces;
using DataObjects.StandartInterfaces.Dictionary;
using DataObjects.StandartInterfaces.Report;

namespace DataObjects.EntityFramework.Implementation
{
    /// <summary>
    /// Entity Framework specific factory that creates data access objects.
    /// </summary>
    /// <remarks>
    /// GoF Design Patterns: Factory.
    /// </remarks>
    public class EntityDaoFactory : IDaoFactory //<=>SqlServerDaoFactory
    {
        #region Security

        #endregion

        #region Dictionary


        #endregion

        #region  Voucher


        #endregion

        #region Report

        #endregion
        public StandartInterfaces.Dictionary.IEmployTest EmployTest
        {
            get { throw new System.NotImplementedException(); }
        }

        public IFixedAssetDao FixedAssetDao { get { return new EntityFixedAssetDao(); } }
        public IFixedAssetCategoryDao FixedAssetCategoryDao { get { return new EntityFixedAssetCategoryDao(); } }


        public StandartInterfaces.Dictionary.IAccountDao AccountDao
        {
            get { return new EntityAccountDao(); }
        }


        public StandartInterfaces.Voucher.IItemTransactionDao ItemTransactionDao
        {
            get { return new EntityItemTransactionDao(); }
        }

        public StandartInterfaces.Voucher.IItemTransactionDetailDao ItemTransactionDetailDao
        {
            get { return new EntityItemTransactionDetailDao(); }
        }

        public IReportListDao ReportListDao { get { return new EntityReportListDao(); } }
        public IReportGroupDao ReportGroupDao { get { return new EntityReportGroupDao(); } }


        public IUnitDao UnitDao
        {
            get { return new EntityUnitDao(); }
        }

        public IStockDao StockDao
        {
            get { return new EntityStockDao(); }
        }

        public IVendorDao VendorDao
        {
            get { return new EntityVendorDao(); }
        }

        public IInventoryItemDao InventoryItemDao
        {
            get { return new EntityInventoryItemDao(); }
        }

        public IAutoBusinessDao AutoBusinessDao
        {
            get { return new EntityAutoBusinessDao(); }
        }

        public IAutoNumberDao AutoNumberDao
        {
            get { return new EntityAutoNumberDao(); }
        }

        public ICustomerDao CustomerDao
        {
            get { return new EntityCustomerDao(); }
        }

        public IDbOptionDao DbOptionDao
        {
            get { return new EntityDbOptionDao(); }
        }

        public IDepartmentDao DepartmentDao
        {
            get { return new EntityDepartmentDao(); }
        }

        public IVoucherTypeDao VoucherTypeDao
        {
            get { return new EntityVoucherTypeDao(); }
        }

        public IRefTypeDao RefTypeDao
        {
            get { return new EntityRefTypeDao(); }
        }


        public IJournalEntryAccountDao JournalEntryAccountDao
        {
            get { return new EntityJournalEntryAccountDao(); }
        }

        public StandartInterfaces.IAccountBalanceDao AccountBalanceDao
        {
            get { return new EntityAccountBalanceDao(); }
        }


        public ITaxTransDao TaxTransDao
        {
            get { return new EntityTaxTransDao(); }
        }
    }
}
